bitkeeper revision 1.1159.258.108 (4270fff77uXrP6ebmHEte60f5WLI-w)
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Thu, 28 Apr 2005 15:23:35 +0000 (15:23 +0000)
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Thu, 28 Apr 2005 15:23:35 +0000 (15:23 +0000)
pgtable.c:
  Use virt_to_ptep.
pgtable.h:
  add virt_to_ptep.

linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c
linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h

index 6fe3f08632115a49ae19a58823464d0658828e99..336d109981df1300d90b2246ad945ff2e50933db 100644 (file)
@@ -374,28 +374,19 @@ void pgd_free(pgd_t *pgd)
 
 void make_lowmem_page_readonly(void *va)
 {
-       pgd_t *pgd = pgd_offset_k((unsigned long)va);
-       pud_t *pud = pud_offset(pgd, (unsigned long)va);
-       pmd_t *pmd = pmd_offset(pud, (unsigned long)va);
-       pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va);
+       pte_t *pte = virt_to_ptep(va);
        queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW);
 }
 
 void make_lowmem_page_writable(void *va)
 {
-       pgd_t *pgd = pgd_offset_k((unsigned long)va);
-       pud_t *pud = pud_offset(pgd, (unsigned long)va);
-       pmd_t *pmd = pmd_offset(pud, (unsigned long)va);
-       pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va);
+       pte_t *pte = virt_to_ptep(va);
        queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW);
 }
 
 void make_page_readonly(void *va)
 {
-       pgd_t *pgd = pgd_offset_k((unsigned long)va);
-       pud_t *pud = pud_offset(pgd, (unsigned long)va);
-       pmd_t *pmd = pmd_offset(pud, (unsigned long)va);
-       pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va);
+       pte_t *pte = virt_to_ptep(va);
        queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW);
        if ( (unsigned long)va >= (unsigned long)high_memory )
        {
@@ -410,10 +401,7 @@ void make_page_readonly(void *va)
 
 void make_page_writable(void *va)
 {
-       pgd_t *pgd = pgd_offset_k((unsigned long)va);
-       pud_t *pud = pud_offset(pgd, (unsigned long)va);
-       pmd_t *pmd = pmd_offset(pud, (unsigned long)va);
-       pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va);
+       pte_t *pte = virt_to_ptep(va);
        queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW);
        if ( (unsigned long)va >= (unsigned long)high_memory )
        {
index 06e91c8149a13a27af74512d46dc83e482e36055..e008baf6fb61c1a84517ed6090d27a604f07805e 100644 (file)
@@ -276,6 +276,7 @@ static inline void ptep_set_wrprotect(pte_t *ptep)
        if (pte_write(pte))
                set_pte(ptep, pte_wrprotect(pte));
 }
+
 static inline void ptep_mkdirty(pte_t *ptep)
 {
        pte_t pte = *ptep;
@@ -455,12 +456,17 @@ void make_page_writable(void *va);
 void make_pages_readonly(void *va, unsigned int nr);
 void make_pages_writable(void *va, unsigned int nr);
 
-#define arbitrary_virt_to_machine(__va)                                        \
+#define virt_to_ptep(__va)                                             \
 ({                                                                     \
        pgd_t *__pgd = pgd_offset_k((unsigned long)(__va));             \
        pud_t *__pud = pud_offset(__pgd, (unsigned long)(__va));        \
        pmd_t *__pmd = pmd_offset(__pud, (unsigned long)(__va));        \
-       pte_t *__pte = pte_offset_kernel(__pmd, (unsigned long)(__va)); \
+       pte_offset_kernel(__pmd, (unsigned long)(__va));                \
+})
+
+#define arbitrary_virt_to_machine(__va)                                        \
+({                                                                     \
+       pte_t *__pte = virt_to_ptep(__va);                              \
        unsigned long __pa = (*(unsigned long *)__pte) & PAGE_MASK;     \
        __pa | ((unsigned long)(__va) & (PAGE_SIZE-1));                 \
 })